// 引入 express 模块
const express = require('express');
// 引入 http 模块
const { createServer } = require('http');
// 引入 socket.io 模块
const { Server } = require('socket.io');

// 创建 Express 应用实例
const app = express();
// 基于 Express 应用实例，创建 http 服务器
const server = createServer(app);
// 创建服务端套接字
const io = new Server(server);

// 
app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html')
});

// 注册事件监听，用于等待客户端的 connect 连接
io.on('connection', (socket) => {
  // 参数 socket 即为连接到服务端来的客户端对象是谁
  console.log('a user connected');

  // 注册客户端连接对象的断开连接事件
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });

  // 注册事件监听，用于在服务端接收到当前 socket 客户端发送的消息
  socket.on('server', (msg) => {
    console.log('服务端接收到聊天消息: ' + msg);
    // 将当前接收到的客户端消息广播发送给每一个连接到服务端的客户端中
    io.emit('client', msg)
  });
});

// 服务器监听端口
server.listen(3000, () => {
  console.log('server running at http://localhost:3000');
});